<%-- 
    Document   : editcomposition
    Created on : 15.05.2011, 17:22:34
    Author     : 647_2
--%>

<%@page import="Entities.URL"%>
<%@page import="Access.URLsRemote"%>
<%@page import="Access.ExecutorsWithInstrumentRemote"%>
<%@page import="Entities.ExecutorWithInstrument"%>
<%@page import="Entities.Genre"%>
<%@page import="Access.GenresRemote"%>
<%@page import="Access.GroupsRemote"%>
<%@page import="Entities.Group"%>
<%@page import="java.util.LinkedList"%>
<%@page import="params.Params"%>
<%@page import="Access.CompositionsRemote"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="ExtEntities.VeryExtComposition"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title><% out.print("Правка/добавление композиции - " + Params.getSiteName()); %></title>
    </head>
    <body>
        <% out.print(Params.getHeader("Правка/добавление композиции")); %>
        
        <%
                   out.println("<a href=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=0\">[добавить новую композицию]</a> ");
                   out.println("<a href=\"" + request.getHeader("referer") + "\">[на предыдущую страницу]</a><br /><br />");

                   //while(request.getHeaderNames().hasMoreElements()){
                   //    out.println(request.getHeaderNames().nextElement() + "<br />");
                   //    request.getHeaderNames().
                   //}

                   InitialContext ic = new InitialContext();
                   CompositionsRemote r = (CompositionsRemote)ic.lookup(CompositionsRemote.class.getName());
                   GroupsRemote gr = (GroupsRemote)ic.lookup(GroupsRemote.class.getName());
                   GenresRemote ge = (GenresRemote)ic.lookup(GenresRemote.class.getName());
                   ExecutorsWithInstrumentRemote ews = (ExecutorsWithInstrumentRemote)ic.lookup(ExecutorsWithInstrumentRemote.class.getName());
                   URLsRemote ur = (URLsRemote)ic.lookup(URLsRemote.class.getName());


                   int mode = 0;
                   int ID = 0;
                   int gID = 0;
                   int ewiID = 0;
                   int urlID = 0;

                   int uID = 0;
                   int rating = 0;

                   String comment = "";

                   String name = "";
                   Double duration = 0.0;
                   String url = "";

                   //ID = Integer.parseInt(request.getParameter("ID"));
                   mode = Integer.parseInt(request.getParameter("mode"));

                   switch(mode){

                       case 13: //добавление оценки

                           if ((request.getParameter("ID") != null) && (request.getParameter("uID") != null) && (request.getParameter("rating") != null) && (request.getParameter("comment") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             uID = Integer.parseInt(request.getParameter("uID"));
                             rating = Integer.parseInt(request.getParameter("rating"));
                             comment = request.getParameter("comment");
                             comment = new String(comment.getBytes("ISO-8859-1"), "UTF-8");

                             if (r.AddRatingToComposition(ID, uID, rating, comment)){
                                out.println("Ваша оценка успешно добавлена!");
                             } else {
                                out.println("Ваша оценка не добавлена!");
                             }
                           } else {
                              out.println("Неверные параметры");
                           }
                           break;

                       case 12: //удаление композиции

                           if (request.getParameter("ID") != null){

                             ID = Integer.parseInt(request.getParameter("ID"));

                             if (r.DeleteComposition(ID)){
                                out.println("Композиция успешно удалена! А жаль :(");
                             } else {
                                out.println("Композиция не удалена!");
                             }
                           } else {
                              out.println("Неверные параметры");
                           }
                           break;

                       case 11: //удаление ссылки

                           if ((request.getParameter("ID") != null) && (request.getParameter("urlID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             urlID = Integer.parseInt(request.getParameter("urlID"));

                             if (r.DeleteURLOfComposition(urlID)){
                                out.println("Ссылка успешно удалена из композиции!");
                             } else {
                                out.println("Ссылка не удалена из композиции!");
                             }
                           } else {
                               out.println("Неверные параметры");
                           }
                           break;

                         case 10: //добавление ссылки

                             if ((request.getParameter("ID") != null) && (request.getParameter("url") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             url = request.getParameter("url");

                             if (r.AddURLToComposition(ID, url)){
                                out.println("Ссылка успешно добавлена к композиции!");
                             } else {
                                out.println("Ссылка не добавлена к композиции!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                       case 9: //удаление ИсИ

                           if ((request.getParameter("ID") != null) && (request.getParameter("ewiID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             ewiID = Integer.parseInt(request.getParameter("ewiID"));

                             if (r.DeleteExecutorWithInstrumentOfComposition(ID, ewiID)){
                                out.println("Исполнитель успешно удалён из композиции!");
                             } else {
                                out.println("Исполнитель не удалён из композиции!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 8: //добавление ИсИ

                             if ((request.getParameter("ID") != null) && (request.getParameter("ewiID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             ewiID = Integer.parseInt(request.getParameter("ewiID"));

                             if (r.AddExecutorWithInstrumentToComposition(ID, ewiID)){
                                out.println("Исполнитель успешно добавлен к композиции!");
                             } else {
                                out.println("Исполнитель не добавлен к композиции!");  
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                       case 7: //удаление жанра

                           if ((request.getParameter("ID") != null) && (request.getParameter("gID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             gID = Integer.parseInt(request.getParameter("gID"));

                             if (r.DeleteGenreOfComposition(ID, gID)){
                                out.println("Жанр успешно удалён из композиции!");
                             } else {
                                out.println("Жанр не удалён из композиции!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 6: //добавление жанра

                             if ((request.getParameter("ID") != null) && (request.getParameter("gID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             gID = Integer.parseInt(request.getParameter("gID"));

                             if (r.AddGenreToComposition(ID, gID)){
                                out.println("Жанр успешно добавлен к композиции!");
                             } else {
                                out.println("Жанр не добавлен к композиции!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 5: //удаление группы

                             if ((request.getParameter("ID") != null) && (request.getParameter("gID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             gID = Integer.parseInt(request.getParameter("gID"));

                             if (r.DeleteGroupOfComposition(ID, gID)){
                                out.println("Группа успешно удалена из композиции!");
                             } else {
                                out.println("Группа не удалена из композиции!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 4: //добавление группы

                             if ((request.getParameter("ID") != null) && (request.getParameter("gID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             gID = Integer.parseInt(request.getParameter("gID"));

                             if (r.AddGroupToComposition(ID, gID)){
                                out.println("Группа успешно добавлена к композиции!");
                             } else {
                                out.println("Группа не добавлена к композиции!");  
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 3: //принятие данных правки

                             if ((request.getParameter("name") != null) && (request.getParameter("ID") != null) && (request.getParameter("duration") != null)){

                              name = request.getParameter("name");
                              name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
                              ID = Integer.parseInt(request.getParameter("ID"));

                              duration = Double.parseDouble(request.getParameter("duration"));

                              if (r.UpdateComposition(ID, name, duration)){
                                    out.println("Композиция обновлена!");
                              } else {
                                    out.println("Композиция не обновлена!");
                              }
                              } else {
                                 out.println("Неверные параметры");
                             }
                            break;

                         case 2: //страница правки (несколько блоков)

                             if (request.getParameter("ID") != null){

                             ID = Integer.parseInt(request.getParameter("ID"));

                             VeryExtComposition comp = r.getFullComposition(ID);

                             if (comp != null){

                             //Блок правки данных композиции
                             out.println("Правка данных о композиции: <br />");
                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=3&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.println("Название: <input type=\"text\" name=\"name\" value=\"" + comp.getName() + "\"/><br />");
                             out.println("Продолжительность: <input type=\"text\" name=\"duration\" value=\"" + comp.getDuration() + "\"/><br />");
                             out.println("<input type=\"submit\" value=\"Править\"/>");
                             out.println("</form>");

                             //Добавление/удаление группы

                             LinkedList<Group> groups = gr.getAllGroups();

                             if (groups != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=4&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Добавление группы: <select name=\"gID\">");

                             for (int i = 0; i < groups.size(); i++){
                                   out.print("<option value=\"" + groups.get(i).getIDAsInt() + "\">" + groups.get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=5&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Удаление группы: <select name=\"gID\">");

                             for (int i = 0; i < comp.getGroups().size(); i++){
                                   out.print("<option value=\"" + comp.getGroups().get(i).getIDAsInt() + "\">" + comp.getGroups().get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");

                             //Добавление/удаление жанра

                             LinkedList<Genre> genres = ge.getAllGenres();


                             if (genres != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=6&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Добавление жанра: <select name=\"gID\">");

                             for (int i = 0; i < genres.size(); i++){
                                   out.print("<option value=\"" + genres.get(i).getIDAsInt() + "\">" + genres.get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=7&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Удаление жанра: <select name=\"gID\">");

                             for (int i = 0; i < comp.getGenres().size(); i++){
                                   out.print("<option value=\"" + comp.getGenres().get(i).getIDAsInt() + "\">" + comp.getGenres().get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");


                             //Добавление/удаление исполнителя с инструментом

                             LinkedList<ExecutorWithInstrument> ewis = ews.getAllExecutorsWithInstrument();

                             if (ewis != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=8&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Добавление исполнителя: <select name=\"ewiID\">");

                             for (int i = 0; i < ewis.size(); i++){
                                   out.print("<option value=\"" + ewis.get(i).getIDAsInt() + "\">" + ewis.get(i).get_executor().get_FIO() + " (" + ewis.get(i).get_instrument().get_name() + ")</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=9&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Удаление исполнителя: <select name=\"ewiID\">");

                             for (int i = 0; i < comp.getEwis().size(); i++){
                                   out.print("<option value=\"" + comp.getEwis().get(i).getIDAsInt() + "\">" + comp.getEwis().get(i).get_executor().get_FIO() + " (" + comp.getEwis().get(i).get_instrument().get_name() + ")</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");

                             //Добавление/удаление ссылок

                             //LinkedList<URL> urls = ur.getAllURLsByCompositionID(comp.getID());

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=10&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Добавление ссылки: <input type=\"text\" name=\"url\">");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=11&ID=" + comp.getID() + "\" method=\"POST\">");
                             out.print("Удаление ссылки: <select name=\"urlID\">");

                             for (int i = 0; i < comp.getUrls().size(); i++){
                                   out.print("<option value=\"" + comp.getUrls().get(i).getIDAsInt() + "\">" + comp.getUrls().get(i).get_URL() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");

                             out.println("<a href=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=12&ID=" + comp.getID() + "\">[удалить композицию]</a>");
                             } else {
                                 out.println("Данная композиция не содержится в базе");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                            break;

                          case 1: //обработчик добавления

                              if ((request.getParameter("name") != null) && (request.getParameter("duration") != null)){

                              name = request.getParameter("name");
                              name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
                              
                              duration = Double.parseDouble(request.getParameter("duration"));

                              if (r.AddComposition(name, duration)){
                                    out.println("Композиция добавлена успешно!");
                              } else {
                                    out.println("Композиция не добавлена!");
                              }
                              } else {
                                 out.println("Неверные параметры");
                             }
                              break;
                              
                          case 0: //страница добавления
                          default:
                              out.println("<form action=\"" + Params.getSiteURL() + "editcomposition.jsp?mode=1\" method=\"POST\">");
                              out.println("Название: <input type=\"text\" name=\"name\" /><br />");
                              out.println("Продолжительность: <input type=\"text\" name=\"duration\" /><br />");
                              out.println("<input type=\"submit\" value=\"Добавить\"/>");
                              out.println("</form>");

                   }


        %>
        <% out.print(Params.getFooter()); %>
    </body>
</html>
